package t1;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Scanner;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 */
@SuppressWarnings({"all"})
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param S string字符串
     * @param T string字符串
     * @return bool布尔型
     */
    public static boolean isSubsequence (String S, String T) {
        // write code here
        // 边界处理
        if (S == null || T == null || S.length() > T.length()){
            return false;
        }
        Map<Character, LinkedList<Integer>> map = new HashMap<>(); // 建立T字符与索引的映射
        // 遍历 T 统计字符与索引的映射
        for(int i = 0; i < T.length(); i++){
            char c = T.charAt(i);
            if (!map.containsKey(c)){
                // 如果不包含，则直接存储
                LinkedList<Integer> list = new LinkedList<>();
                list.add(i);
                map.put(c, list);
            }else {
                // 如果包含
                LinkedList<Integer> list = map.get(c);
                list.add(i);
                map.put(c, list); // 修改list
            }
        }
        // 遍历 S
        int index = -1;
        for(char c : S.toCharArray()){
            // 如果在map中不包含这个字符, 说明不是子序列
            if (!map.containsKey(c)){
                return false;
            }else {
                // 如果包含，则需要进行判断
                LinkedList<Integer> list = map.get(c);
                if (list == null || list.size() == 0){
                    return false;
                }
                int curIndex = -2;
                // 需要检查list中是否有大于index的curIndex
                for (Integer i : list){
                    if (i > index){
                        curIndex = i;
                        break;
                    }
                }
                if (curIndex < index){
                    return false; // 说明当前字符是已经访问过 T 字符之前的字符
                }
                index = curIndex;
            }
        }
        return true;
    }

    // 测试
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()){
            String S = in.nextLine();
            String T = in.nextLine();
            boolean flag = isSubsequence(S, T);
            System.out.println(flag);
        }
        in.close();
    }
}
